package charpter02_thread_safe.lession07_need_consider_thread_safe;

/**
 * 场景 ：访问共享变量或资源
 * 1、访问共享变量或资源
 * 2、依赖时序的操作,例如
 *      if (map.containsKey(key)) {
 *          map.remove(obj)
 *      }
 *      if (x == 1) {
 *          x = 7 * x;
 *      }
 * 3、不同数据之间存在绑定关系
 * 4、对方没有声明自己是线程安全的
 * 本类描述：共享的变量或资源带来的线程安全问题
 */
public class ThreadNotSafe1 {
    private static int i;
    public static void main(String[] args) throws InterruptedException {
        Runnable r = () -> {
            for (int j = 0; j < 10000; j++) {
                i++;
            }
        };
        Thread thread1 = new Thread(r);
        Thread thread2 = new Thread(r);
        thread1.start();
        thread2.start();
        thread1.join();
        thread2.join();
        System.out.println(i);
    }

}
